package org.abc.fund.entity.strategy;

import jakarta.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.UpdateTimestamp;

/** RebalanceRule类用于定义和管理再平衡策略 它包含了执行再平衡所需的所有参数和条件 */
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class RebalanceRule {
  /** 再平衡类型 */
  @Enumerated(EnumType.STRING)
  @Column(nullable = false)
  private Type type;

  /** 再平衡频率, 当type = PERIODIC时可用 */
  @Enumerated(EnumType.STRING)
  private Frequency frequency;

  /** 再平衡阈值, 当type = THRESHOLD可用 */
  private BigDecimal threshold;

  public enum Frequency {
    WEEKLY,
    MONTH
  }

  public enum Type {
    PERIODIC, // 周期性调仓
    THRESHOLD // 阈值触发调仓
  }
}
